/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pkg1ifxArchivos;

/**
 *
 * @author strailaparicio
 * Esta clase debe ser reconstruida con el protocolo nuevo para comunicacion de
 * agentes GENMON, AKIRA, de INFOGEX.
 */
public class cIfxProtocolo {

    private String sultimomensaje="";
    private String snombreagente="";
    private String sIP="";
    private static String sSO= System.getProperty("os.name");
    //private cIfxDatosMSJ oelmsj=null;

  
/**
     * 
     * @param theInput
     * @return 
     */
    public String procesarEntrada(String theInput) {
        ///
        int WAITING = 0;
        int SENTKNOCKKNOCK = 1;
        int SENTCLUE = 2;
        int ANOTHER = 3;

        int NUMJOKES = 5;

        int state = WAITING;
        int currentJoke = 0;

        String[] clues = { "IFX-SERVIDOR", "Joven o Vieja dama", "Auch", "Quien", "Quien" };
        String[] answers = { "IFX-SERVIDOR aqui, hace frio aqui!",
                                 "Yo no sabia que podia joder!",
                                 "Vendiciones!",
                                 "Hay un buho en esta lista?",
                                 "Hay un eco en esta lista?" };
        ///
        String theOutput = null;

        if (state == WAITING) {
            theOutput = "Toc! Toc!";
            state = SENTKNOCKKNOCK;
        } else if (state == SENTKNOCKKNOCK) {
            if (theInput.equalsIgnoreCase("Quien es?")) {
                theOutput = clues[currentJoke];
                state = SENTCLUE;
            } else {
                theOutput = "Se supone que diga \"Quien es?\"! " +
			    "Trate de nuevo. Toc! Toc!";
            }
        } else if (state == SENTCLUE) {
            if (theInput.equalsIgnoreCase(clues[currentJoke] + " Quien?")) {
                theOutput = answers[currentJoke] + " Quiere Otro? (y/n)";
                state = ANOTHER;
            } else {
                theOutput = "Se supone que diga \"" +
			    clues[currentJoke] +
			    " Quien?\"" +
			    "! Trate de nuevo. Toc! Toc!";
                state = SENTKNOCKKNOCK;
            }
        } else if (state == ANOTHER) {
            if (theInput.equalsIgnoreCase("y")) {
                theOutput = "Toc! Toc!";
                if (currentJoke == (NUMJOKES - 1))
                    currentJoke = 0;
                else
                    currentJoke++;
                state = SENTKNOCKKNOCK;
            } else {
                theOutput = "Chao.";
                state = WAITING;
            }
        }
        return theOutput;
    }
    public String getUltimoMsj()
    {
        return sultimomensaje;
    }
    public String getNombreAgente()
    {
        return snombreagente;
    }

    public String quitarPalabra(String sfrase, String spalabra)
    {
        String ssalida="";
        int nstart = sfrase.indexOf(spalabra)+spalabra.length();
        ssalida = sfrase.substring(nstart);
        return ssalida;

    }
    public String procesarES(String sentrada){
        String sretorno=null;

        if(sentrada.equals("IFX-Saludo")){
            sretorno = "IFX-Servidor "+sSO;
        }
        else if(sentrada.contains("IFX-DatosAgente"))
        {
            snombreagente=quitarPalabra(sentrada,"IFX-DatosAgente");
            sretorno="IFX-DatosAgente";
        }
        else if (sentrada.equalsIgnoreCase("IFX-Desconectar")){
            sretorno="IFX-Desconectando ...";

        }
        else if(sentrada.equalsIgnoreCase("IFX-Ayuda"))
        {
            sretorno = "Ayuda de comandos Servidor INFOGEX \n" +
                    "IFX-DatosAgente [nombre|IP|usuario|clave] Datos para registrar el agente\n" +
                    "IFX-Desconectar (Para terminar conexion en el servidor)\n"+
                    "IFX-Ayuda (Para Ayuda)\n"+
                    "IFX-Mensaje :: [aqui el mensaje] (Para enviar un mensaje al sevidor)\n"+
                    "IFX-Msj Nombre Agente|Direccion IP|Tipo Agente|Mensaje a enviar|importancia\n"+
                    "    [TipoAgente] AGENTE 0=CONSOLA,1=AKIRA, 2=GENMON, 3=AKER\n"+
                    "    [Importancia Msj] 0=NORMAL;1=MEDIO;2=ALTO\n"+
                    "IFX-Put origen|destino|tamaño|tamPaquete(1024)\n"+
                    "IFX-InfFile origen(path\\nombre)\n"+
                    "IFX-Cmd (comando)\n"+
                    "IFX-CataFile origen(path\\nombre.ctai)\n"+
                    "IFX-Get origen\n"+
                    "IFX-Saludo\n"+
                    "IFX-PutASCII origen|destino|tamaño|tamPaquete(1024)\n"+
                    "FENIX-Identificar TIPO BIOMETRIA|TAMANO|tamPaquete(1024)\n"+
                    "FENIX-Verificar TIPO BIOMETRIA|TAMANO|tamPaquete(1024)\n"+
                    "    [TIPO BIOMETRIA] HUELLA,ROSTRO,IRIS\n"+
                    "\n"+
                    "<---FIN--->";

        }
        else if(sentrada.contains("IFX-Msj"))
        {
            //cIfxDatosMSJ omsj=new cIfxDatosMSJ();
            sultimomensaje=sentrada;
            sretorno="IFX-Msj";
            
        }
        else if(sentrada.contains("IFX-Mensaje"))
        {
            sultimomensaje=quitarPalabra(sentrada,"IFX-Mensaje");
            sretorno="IFX-Mensaje";
        }
        else if(sentrada.contains("IFX-putASCII"))
        {
            //IFX-Put nombre archivo|tamaño|path destino
            sultimomensaje=quitarPalabra(sentrada,"IFX-putASCII");
            sretorno="IFX-putASCII";
        }                
        else if(sentrada.contains("IFX-Put"))
        {
            //IFX-Put nombre archivo|tamaño|path destino
            sultimomensaje=quitarPalabra(sentrada,"IFX-Put");
            sretorno="IFX-Put";
        }
        else if(sentrada.contains("IFX-InfFile"))
        {
            sultimomensaje=quitarPalabra(sentrada,"IFX-InfFile");
            sretorno="IFX-InfFile";
        }
        else if(sentrada.contains("IFX-Cmd"))
        {
            //IFX-Cmd comando con parametros
            sultimomensaje=quitarPalabra(sentrada,"IFX-Cmd");
            sretorno="IFX-Cmd";
        }
        else if(sentrada.contains("IFX-CataFile"))
        {
            sultimomensaje=quitarPalabra(sentrada,"IFX-CataFile");
            sretorno="IFX-CataFile";
        }
        else if(sentrada.contains("IFX-Get"))
        {
            sultimomensaje=quitarPalabra(sentrada,"IFX-Get");
            sretorno="IFX-Get";
        }         
        //"FENIX-Identificar"
        //FENIX - Biometrias
        //"botFENIX-Identificar"
        
        else if(sentrada.contains("botFENIX-Identificar"))
        {
            //IFX-Put nombre archivo|tamaño|path destino
            sultimomensaje=quitarPalabra(sentrada,"botFENIX-Identificar");
            sretorno="botFENIX-Identificar";
        }

        else if(sentrada.contains("botFENIX-Verificar"))
        {
            //IFX-Put nombre archivo|tamaño|path destino
            sultimomensaje=quitarPalabra(sentrada,"botFENIX-Verificar");
            sretorno="botFENIX-Verificar";
        }

        else if(sentrada.contains("botFENIX-Insertar"))
        {
            //IFX-Put nombre archivo|tamaño|path destino
            sultimomensaje=quitarPalabra(sentrada,"botFENIX-Insertar");
            sretorno="botFENIX-Insertar";
        }
        else if(sentrada.contains("FENIX-Identificar"))
        {
            //IFX-Put nombre archivo|tamaño|path destino
            sultimomensaje=quitarPalabra(sentrada,"FENIX-Identificar");
            sretorno="FENIX-Identificar";
        }
                
        else if(sentrada.contains("FENIX-Verificar"))
        {
            //IFX-Put nombre archivo|tamaño|path destino
            sultimomensaje=quitarPalabra(sentrada,"FENIX-Verificar");
            sretorno="FENIX-Verificar";
        }

        else if(sentrada.contains("FENIX-Insertar"))
        {
            //FENIX-Insertar TIPO BIOMETR|tamaño|1024|cedula
            sultimomensaje=quitarPalabra(sentrada,"FENIX-Insertar");
            sretorno="FENIX-Insertar";
        }
        else
        {
           sretorno = "IFX-Desconectando ...";
           //sretorno = "IFX-Ayuda";
        }

        return sretorno;

    }

}
